﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class УправлениеОтчетами
	{
		// Формирование полной копии отбора
		//
		// Параметры
		//  Отбор  – Отбор – Исходный отбор, копию которого необходимо получить
		//
		// Возвращаемое значение:
		//   ТаблицаЗначений   – Копия исходного отбора
		//

		public object ПолучитьКопиюОтбораВТЗ(/*Отбор*/)
		{
			//Копия = Новый ТаблицаЗначений;
			//Копия.Колонки.Добавить("ВидСравнения");
			//Копия.Колонки.Добавить("Значение");
			//Копия.Колонки.Добавить("ЗначениеПо");
			//Копия.Колонки.Добавить("ЗначениеС");
			//Копия.Колонки.Добавить("Имя");
			//Копия.Колонки.Добавить("Использование");
			//Копия.Колонки.Добавить("Представление");
			//Копия.Колонки.Добавить("ПутьКДанным");
			//Копия.Колонки.Добавить("ТипЗначения");
			return null;
		}
		// ПолучитьКопиюОтбора(Отбор)
		// Заполнение отбора значениями из таблицы значений.
		// Соответствие полей устанавливается по представлению и типам значений
		//
		// Параметры
		//  Отбор  – Отбор           – Отбор, который требуется заполнить значениями
		//  ТЗ     – ТаблицаЗначений – Таблица содержит значения для отбора.
		//                             Структура колонок повторяет структуру отбора
		//

		public void УстановитьОтборИзТаблицы(/*Отбор, ТЗ*/)
		{
		}
		// УстановитьОтборИзТаблицы(Отбор, ТЗ)
		// Функция возвращает Строку Вида отбора для запроса
		//
		// Параметры
		// ВыбВидСравнения       - ВидСравнения
		// ЗначениеОтбора        - Значение отбора запроса
		// СтрокаАргументаОтбора - Строка, Аргумент запроса, т.е. то что должно быть написано до вида сревнения
		// ЗначениеОтбораНач     - Произвольный, значение отбора для видов сравнения, у которых необходимо указывать два значения, начальное значение
		// ЗначениеОтбораКон     - Произвольный, значение отбора для видов сравнения, у которых необходимо указывать два значения, конечное значение
		//
		// Возвращаемое значение
		//  Строка для запроса
		//

		public object ПолучитьСтрокуОтбора(/*ВыбВидСравнения, ЗначениеОтбора, СтрокаПоляОтбора, ЗначениеОтбораС = Неопределено, ЗначениеОтбораПо = Неопределено, СамоЗначение = Неопределено, СамоЗначениеС = Неопределено, СамоЗначениеПо = Неопределено*/)
		{
			//СтрокаВозврата = "";
			if(true/*ВыбВидСравнения = ВидСравнения.Равно*/)
			{
				//СтрокаВозврата = СтрокаПоляОтбора + Строка(" = " + ЗначениеОтбора);
			}
			return null;
		}
		// ПолучитьСтрокуОтбора()
		// Функция анализирует измерения Построителя Отчета и ищет среди них повторы
		// Конечно же, например, возможен вывод в кросс-таблицу при одном и том же
		// измерении, встречающемся в строках и столбцах, но тогда отчет будет нечитабален
		// и непонятно, зачем он вообще нужен.
		//
		// Параметры
		//
		//	ПостроительОтчета - Построитель отчета, измерения которого анализируются.
		//

		public object ПроверитьПовторыИзмеренийПостроителя(/*ПостроительОтчета*/)
		{
			//СписокЗначений = Новый СписокЗначений;
			//СписокЗначений = Новый СписокЗначений;
			return null;
		}
		// ПроверитьПовторыИзмеренийПостроителя()
		// Процедура обрабатывает Порядок Построителя отчета и удаляет из него те элементы порядка,
		// которые не связаны с выбранными полями или измерениями.
		// Это делается для несоздания ложного впечатления о том, что что-то как-то отсортировали
		// в одних случаях, и для избежания ошибки времени выполнения при выполнении запроса
		// в других случаях
		//
		// Параметры:
		//	ПостроительОтчета - ПостроительОтчета, Порядок которого надо обработать
		//

		public void ПроверитьПорядокПостроителяОтчета(/*ПостроительОтчета*/)
		{
			//КоличествоЭлементовПорядка = ПостроительОтчета.Порядок.Количество();
			//Конструктор = Новый КонструкторЗапроса;
			//ПопыткаПровалилась = Ложь;
			if(true/*КоличествоЭлементовПорядка > 0*/)
			{
			}
			//КопияПостроителя = Новый ПостроительОтчета;
			/*// Запрос оказался синтаксически неправильным...
*/
			//КопияПостроителя.УстановитьНастройки(ПостроительОтчета.ПолучитьНастройки(Истина, Ложь, Истина, Истина), Истина, Ложь, Истина, Истина);
			if(true/*ПопыткаПровалилась*/)
			{
				/*// Побочным эффектом этой процедуры может послужить прочистка всего Порядка у
*/
				/*// построителя отчета запросом, который прошел первую проверку, но имеет поля упорядочивания,
*/
				/*// которые отсутствуют в выбранных полях
*/
			}
			/*// Теперь проверим порядки на то, что если в выбранных полях есть регистратор,
*/
			/*// то для корректной работы необходимо установить порядок по периоду и самому регитстратору
*/
			if(true/*ПостроительОтчета.ВыбранныеПоля.Найти("Регистратор") <> Неопределено*/)
			{
				//ЕстьРегистратор = Ложь;
				//ЕстьПериод = Ложь;
				//КоличествоЭлементовПорядка = ПостроительОтчета.Порядок.Количество();
				if(true/*КопияПостроителя.ДоступныеПоля.Найти("Период") <> Неопределено*/)
				{
					if(true/*НЕ ЕстьПериод*/)
					{
						//КопияПостроителя.Порядок.Очистить();
					}
				}
				if(true/*КопияПостроителя.ДоступныеПоля.Найти("Регистратор") <> Неопределено*/)
				{
					if(true/*НЕ ЕстьРегистратор*/)
					{
						//КопияПостроителя.Порядок.Очистить();
					}
				}
			}
		}
		// ПроверитьПорядокПостроителяОтчета()
		// Удаляет автоматически добавляемые Построителем при инициализации дополнительные поля с измерениями
		//
		// Параметры:
		//	нет
		//

		public void ОчиститьДополнительныеПоляПостроителя(/*ПостроительОтчета*/)
		{
			//Сч=0;
			while(true/*Сч<ПостроительОтчета.ВыбранныеПоля.Количество()*/)
			{
				if(true/*ПостроительОтчета.ИзмеренияСтроки.Найти(ПостроительОтчета.ВыбранныеПоля[Сч].Имя)<>Неопределено*/)
				{
					//ПостроительОтчета.ВыбранныеПоля.Удалить(ПостроительОтчета.ВыбранныеПоля[Сч]);
				}
			}
			//;;
		}
		// ОчиститьДополнительныеПоляПостроителя()
		// Процедура добавляет показатель в выбранные поля. Вызывается перед выполнением запроса.
		//
		// Параметры:
		//	ИмяПоляПостроителя - строка, идентификатор поля построителя
		//	ПостроительОтчета  - Построитель отчета
		//

		public void ОбработкаПоказателейДобавитьВВыбранныеПоля(/*ИмяПоляПостроителя, ПостроительОтчета*/)
		{
			//ПостроительОтчета.ДоступныеПоля.Найти(ИмяПоляПостроителя).Поле = Истина;
			//ВыбранноеПолеПоказателя = ПостроительОтчета.ВыбранныеПоля.Найти(ИмяПоляПостроителя);
			if(true/*ВыбранноеПолеПоказателя = Неопределено*/)
			{
				//ВыбранноеПолеПоказателя = ПостроительОтчета.ВыбранныеПоля.Добавить(ИмяПоляПостроителя, ИмяПоляПостроителя);
			}
			//ВыбранноеПолеПоказателя.Представление = ПостроительОтчета.ДоступныеПоля.Найти(ИмяПоляПостроителя).Представление;
		}
		// ОбработкаПоказателейДобавитьВВыбранныеПоля()
		// Процедура запоняет данными отбор из структуры.
		//
		// Параметры
		//  Отбор - Отбор
		//  СтруктураОтбора - Структура
		//

		public void ЗаполнитьОтборИзСтруктуры(/*Отбор, СтруктураОтбора*/)
		{
			if(true/*ТипЗнч(СтруктураОтбора) = Тип("Структура")*/)
			{
			}
		}
		// ЗаполнитьОтборИзСтруктуры()
		// Процедура запоняет данными отбор из таблицы значений.
		//
		// Параметры
		//  Отбор - Отбор
		//  Таблица - ТаблицаЗначений, структурой колонок полностью повторяющая структуру отбора
		//

		public void ЗаполнитьОтборИзТаблицыЗначений(/*Отбор, Таблица, Знач ВызыватьИсключениеПриОшибкеУстановки = Истина*/)
		{
			if(true/*ТипЗнч(Таблица) = Тип("ТаблицаЗначений")*/)
			{
			}
		}
		// Процедура заполнения начальных настроек по метаданным для универсального отчета или отчета на базе универсального

		public void ЗаполнитьНачальныеНастройкиПоМетаданнымРегистра(/*СтруктураПредставлениеПолей, МассивОтбора, Контекст, ТипОтчета*/)
		{
			//ИмяРегистра = Контекст.ИмяРегистра;
			//ПостроительОтчета = Контекст.ПостроительОтчета;
			//МетаданныеРегистра = Метаданные.РегистрыНакопления.Найти(ИмяРегистра);
			if(true/*МетаданныеРегистра = Неопределено*/)
			{
			}
			//ТекстПоляЗапроса = "";
			//ТекстПоляИтоговЗапроса = "";
			//ТекстПоляПоказатели = "";
			//ТекстПоляИтогов = "";
			//ТекстВыводимыеПоляЗапроса = "";
			//ТекстПоляУпорядочивания = "";
			//ТекстПоляИзмерений = "";
			//ТекстВыводимыеПоляПериоды = "";
			//ТекстПоляИтоговПериоды = "";
			//ТекстИсточникиСведений ="";
			//ТекстПоляКатегорий = "";
			//ТекстПоляГруппировки = "";
			//МассивИзмеренийКолонки = Новый Массив;
			//МассивВыбранныеПоляПоУмолчанию = Новый Массив;
			//МассивИзмеренияСтрокиПоУмолчанию = Новый Массив;
			if(true/*НЕ ЗначениеЗаполнено(Контекст.мНазваниеОтчета) И Не ПустаяСтрока(ИмяРегистра)*/)
			{
				//Контекст.мНазваниеОтчета = Метаданные.РегистрыНакопления[ИмяРегистра].Представление() + ?(ТипОтчета = "ОстаткиИОбороты", ": остатки и обороты", "");
			}
			//ВидРегистра = Метаданные.РегистрыНакопления[ИмяРегистра].ВидРегистра;
			if(true/*ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки*/)
			{
				//ТипПоляРегистра="Остаток";
				/*// Отчеты по остаткам - на дату
*/
				if(true/*ТипОтчета = "СписокКроссТаблица"*/)
				{
					//Контекст.мРежимВводаПериода = 1;
				}
			}
			if(true/*ТипОтчета = "СписокКроссТаблица"*/)
			{
				//Контекст.ВыводитьПоказателиВСтроку=Истина;
			}
			//ТаблицаПолей = Новый ТаблицаЗначений;
			//ТаблицаПолей.Колонки.Добавить("ПутьКДанным");
			/*// описание поля запроса поля, для которого добавляются свойства и
*/
			/*// категории. Используется в условии соединения с регистром сведений,
*/
			/*// хранящим значения свойств или категорий
*/
			//ТаблицаПолей.Колонки.Добавить("Представление");
			/*// представление поля, для которого добавляются свойства и категории. 
*/
			//ТаблицаПолей.Колонки.Добавить("Назначение");
			/*// назначение свойств/категорий объектов для данного поля
*/
			/*//	ТаблицаПолей.Колонки.Добавить("ТипЗначения");  // тип значения поля, для которого добавляются свойства и категории.
*/
			/*// Не используется.
*/
			//ТаблицаПолей.Колонки.Добавить("НетКатегорий");
			/*// признак НЕиспользования категорий для объекта
*/
			//ТекстПоляГде = Сред(ТекстВыводимыеПоляЗапроса, 2);
			/*// Предопределенные группировки по стандартным периодам
*/
			if(true/*(ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты И ((ТипОтчета = "СписокКроссТаблица") ИЛИ (ТипОтчета = "Диаграмма"))) или (ТипОтчета = "ОстаткиИОбороты")*/)
			{
				/*// Для списка всех полей
*/
				/*ТекстПоляИтоговПериоды = ТекстПоляИтоговПериоды + ",
		|	НачалоПериода(Период, День) КАК ПериодДень ,
		|	НачалоПериода(Период, Неделя) КАК ПериодНеделя ,
		|	НачалоПериода(Период, Декада) КАК ПериодДекада ,
		|	НачалоПериода(Период, Месяц) КАК ПериодМесяц ,
		|	НачалоПериода(Период, Квартал) КАК ПериодКвартал ,
		|	НачалоПериода(Период, Полугодие) КАК ПериодПолугодие ,
		|	НачалоПериода(Период, Год) КАК ПериодГод";*/
				/*ТекстВыводимыеПоляПериоды = ТекстВыводимыеПоляПериоды + ",
		|	НачалоПериода(Период, День) КАК ПериодДень ,
		|	НачалоПериода(Период, Неделя) КАК ПериодНеделя ,
		|	НачалоПериода(Период, Декада) КАК ПериодДекада ,
		|	НачалоПериода(Период, Месяц) КАК ПериодМесяц ,
		|	НачалоПериода(Период, Квартал) КАК ПериодКвартал ,
		|	НачалоПериода(Период, Полугодие) КАК ПериодПолугодие ,
		|	НачалоПериода(Период, Год) КАК ПериодГод";*/
				//СтруктураПредставлениеПолей.Вставить("Период", "Период");
				//СтруктураПредставлениеПолей.Вставить("ПериодДень", "По дням");
				//СтруктураПредставлениеПолей.Вставить("ПериодНеделя", "По неделям");
				//СтруктураПредставлениеПолей.Вставить("ПериодДекада", "По декадам");
				//СтруктураПредставлениеПолей.Вставить("ПериодМесяц", "По месяцам");
				//СтруктураПредставлениеПолей.Вставить("ПериодКвартал", "По кварталам");
				//СтруктураПредставлениеПолей.Вставить("ПериодПолугодие", "По полугодиям");
				//СтруктураПредставлениеПолей.Вставить("ПериодГод", "По годам");
				/*// Для списка всех полей
*/
				/*ТекстВыводимыеПоляЗапроса = ТекстВыводимыеПоляЗапроса + ",
		|	Период ,
		|	Регистратор.* КАК Регистратор";*/
				//СтруктураПредставлениеПолей.Вставить("Регистратор", "Документ движения (Регистратор)");
			}
			/*Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ" 
	+ Сред(ТекстПоляЗапроса + ТекстПоляПоказатели,2) 
	+ Символы.ПС + "{ВЫБРАТЬ " + Сред(ТекстВыводимыеПоляЗапроса+ТекстПоляПоказатели+"
	|	//СВОЙСТВА
	|"+ТекстВыводимыеПоляПериоды, 2) + "}";*/
			if(true/*(ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты И ((ТипОтчета = "СписокКроссТаблица") ИЛИ (ТипОтчета = "Диаграмма")))*/)
			{
				/*Текст =  Текст +
		"
		|ИЗ РегистрНакопления." + ИмяРегистра + ".Обороты(&ДатаНач, &ДатаКон, {&Периодичность}, ";*/
				//СтруктураПредставлениеПолей.Вставить("Периодичность", "Периодичность разворота итогов");
			}
			/*Текст = Текст + "{"+ ТекстПоляГде + "}) КАК ТаблицаРегистра
	|//СОЕДИНЕНИЯ";*/
			//Текст = Текст + ТекстИсточникиСведений;
			if(true/*Не ПустаяСтрока(ТекстПоляГруппировки)*/)
			{
				/*Текст = Текст + Символы.ПС + "СГРУППИРОВАТЬ ПО " + Сред(ТекстПоляГруппировки, 2)+"
		|//СГРУППИРОВАТЬПО";*/
			}
			/*// Отбор
*/
			/*Текст = Текст + Символы.ПС + "{ГДЕ " + Сред(ТекстВыводимыеПоляЗапроса, 2) + "
	|//СВОЙСТВА
	|//КАТЕГОРИИ
	|}";*/
			/*// Порядок
*/
			/*Текст = Текст + Символы.ПС + "{УПОРЯДОЧИТЬ ПО " + Сред(ТекстВыводимыеПоляЗапроса + ТекстПоляУпорядочивания, 2) + "
	|//СВОЙСТВА
	|}";*/
			if(true/*Не ПустаяСтрока(ТекстПоляИтогов)*/)
			{
				/*Текст = Текст + Символы.ПС +  
		"{ИТОГИ ПО " + Сред(ТекстПоляИтогов+ТекстПоляИтоговПериоды, 2) + "
		|//СВОЙСТВА
		|}";*/
			}
			/*Текст = Текст + Символы.ПС +  
	"ИТОГИ  " + Сред(ТекстПоляИтоговЗапроса, 2) + Символы.ПС + 
	"ПО ОБЩИЕ " + ТекстПоляИзмерений;*/
			/*// Автоупорядочивание
*/
			//Текст = Текст + Символы.ПС + "АВТОУПОРЯДОЧИВАНИЕ ";
			//ТекстПоляКатегорий = "";
			//ТекстПоляСвойств = "";
			if(true/*Контекст.ИспользоватьСвойстваИКатегории = Истина*/)
			{
				/*ДобавитьВТекстСвойстваИКатегории(ТаблицаПолей, Текст, СтруктураПредставлениеПолей, 
				Контекст.мСоответствиеНазначений, ПостроительОтчета.Параметры
				,, ТекстПоляКатегорий, ТекстПоляСвойств,,,,,,Контекст.мСтруктураДляОтбораПоКатегориям);*/
			}
			//ПостроительОтчета.Текст = Текст;
			if(true/*Контекст.ИспользоватьСвойстваИКатегории = Истина*/)
			{
				//УстановитьТипыЗначенийСвойствИКатегорийДляОтбора(ПостроительОтчета, ТекстПоляКатегорий, ТекстПоляСвойств, Контекст.мСоответствиеНазначений, СтруктураПредставлениеПолей);
			}
		}
		// ЗаполнитьНачальныеНастройкиПоМетаданнымРегистра()
		// Процедура делает показатель недоступным для выбора как поле, удаляет из выбранных полей
		// Вызывается после формирования отчета.
		//
		// Параметры:
		//	ИмяПоляПостроителя - строка, идентификатор поля построителя
		//	ПостроительОтчета  - Построитель отчета
		//

		public void ОбработкаПоказателейУдалитьИзДоступныхПолей(/*ИмяПоляПостроителя, ПостроительОтчета*/)
		{
			//Представление = "";
			//ВыбранноеПоле = ПостроительОтчета.ВыбранныеПоля.Найти(ИмяПоляПостроителя);
			if(true/*ВыбранноеПоле<>Неопределено*/)
			{
				//ПостроительОтчета.ВыбранныеПоля.Удалить(ВыбранноеПоле);
			}
			//ДоступноеПоле = ПостроительОтчета.ДоступныеПоля.Найти(ИмяПоляПостроителя);
			if(true/*ДоступноеПоле<>Неопределено*/)
			{
				//Представление = ДоступноеПоле.Представление;
				//ТипЗначения = ДоступноеПоле.ТипЗначения;
				//ПостроительОтчета.ДоступныеПоля.Удалить(ДоступноеПоле);
			}
			if(true/*НЕ ЗначениеЗаполнено(Представление)*/)
			{
				//Представление = ИмяПоляПостроителя;
			}
			//Поле = ПостроительОтчета.ДоступныеПоля.Добавить(ИмяПоляПостроителя, Представление, ТипЗначения);
			//Поле.Порядок = Истина;
		}
		// ОбработкаПоказателейУдалитьИзДоступныхПолей()
		// Функция сохраняет реквизиты отчета в структуре. Данные можно восстановить процедурой ВосстановитьРеквизитыОтчета().
		// Используется для передачи реквизитов отчета при расшифровке.
		// По умолчанию сохраняются все реквизиты отчета, кроме реквизитов имеющих тип Строка, Отчет или Обработка.
		// Табличные части также сохраняются.
		// Если список реквизитов для сохранения задан явно, список исключений игнорируется.
		// Данные передаются в структуре с ключом "_РеквизитыОтчета", значением является структура с сохраненными значениями, ключ - имя реквизита отчета.
		// Если передан параметр СтруктНастройка, то данные сохраняются в переданной структуре (под указанным ключом), иначе в новой.
		//

		public object СохранитьРеквизитыОтчета(/*ОтчетОбъект, СтруктНастройка = Неопределено, Знач СтрСохранять = "", Знач СтрНеСохранять = ""*/)
		{
			//СтруктПараметры = ?(СтруктНастройка = Неопределено, Новый Структура, СтруктНастройка);
			//МетаОтчет = ОтчетОбъект.Метаданные();
			if(true/*ПустаяСтрока(СтрСохранять)*/)
			{
				//СтруктДанные = Новый Структура;
				//СтруктИсключений = ?(ПустаяСтрока(СтрНеСохранять), Новый Структура, Новый Структура(СтрНеСохранять));
				//МетаОтчеты    = Метаданные.Отчеты;
				//МетаОбработки = Метаданные.Обработки;
				/*// Сохраним табличные части
*/
			}
			//СтруктПараметры.Вставить("_РеквизитыОтчета", СтруктДанные);
			return null;
		}
		// СохранитьРеквизитыОтчета()
		// Функция восстанавливает значения реквизитов отчета, сохраненные в структуре функцией СохранитьРеквизитыОтчета()
		//

		public void ВосстановитьРеквизитыОтчета(/*ОтчетОбъект, СтруктНастройка*/)
		{
			if(true/*ТипЗнч(СтруктНастройка) <> Тип("Структура")
	 ИЛИ НЕ СтруктНастройка.Свойство("_РеквизитыОтчета")*/)
			{
			}
			//МетаОтчет = ОтчетОбъект.Метаданные();
		}
		// ВосстановитьРеквизитыОтчета()
		// Функция формирует выборку вложенных записей, если текущая запись не Неопределено

		public object СформироватьВыборку(/*Выборка, ОбходРезультатаЗапроса, Измерение, ГруппировкиДляЗначенийГруппировок = Неопределено*/)
		{
			if(true/*Выборка <> Неопределено*/)
			{
				if(true/*ГруппировкиДляЗначенийГруппировок = Неопределено*/)
				{
					//Выборка = Выборка.Выбрать(ОбходРезультатаЗапроса, Измерение);
				}
			}
			return null;
		}
		// Процедура устанавливает курсор в ячейке Таб. документа если выводится группа

		public void УстановитьКурсивПоТипуЗаписи(/*Ячейка, ТипЗаписи*/)
		{
			if(true/*ТипЗаписи = ТипЗаписиЗапроса.ИтогПоИерархии*/)
			{
				//Ячейка.Шрифт = Новый Шрифт(Ячейка.Шрифт , , , , Истина);
			}
		}
		////////////////////////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ИНТЕРФЕЙСА ОТЧЕТОВ
		// Связывает поля отбора на основной форме с данными, устанавливает представления, прячет лишние

		public void ОбработатьПоляОтбораНаОсновнойФормеУниверсальногоОтчета(/*ЭлементыФормы, ПостроительОтчета, СтруктураСвязиЭлементовСДанными = Неопределено, ПутьКПостроителю = "ОтчетОбъект"*/)
		{
			/*// Структура для хранения связи э.у. с данными
*/
			//СтруктураСвязиЭлементовСДанными = Новый Структура;
			//КоличествоОтборов = 0;
			if(true/*КоличествоОтборов>5*/)
			{
				//КоличествоОтборов = 5;
			}
			//Сч = 0;
		}
		// ОбработатьПоляОтбораНаОсновнойФормеУниверсальногоОтчета()
		// Процедура-обработчик изменения поля настройки

		public void ПолеНастройкиПриИзменении(/*Элемент, Отбор, СтруктураСвязиЭУсДанными=Неопределено*/)
		{
			//Поз = Найти(Элемент.Имя, "ПолеНастройки");
			if(true/*Поз>0*/)
			{
				if(true/*ТипЗнч(СтруктураСвязиЭУсДанными)= Тип("Структура")*/)
				{
					/*// Имяполя отбора найдем из пути к данным
*/
					//ПутьКДанным="";
					if(true/*СтруктураСвязиЭУсДанными.Свойство(Элемент.Имя, ПутьКДанным)*/)
					{
						//ПутьКДанным = Сред(ПутьКДанным, Найти(ПутьКДанным, "Отбор.")+СтрДлина("Отбор."));
						//ИмяПоля = Лев(ПутьКДанным, Найти(ПутьКДанным, ".")-1);
					}
				}
				//МетаданныеЗначения = Метаданные.НайтиПоТипу(ТипЗнч(Элемент.Значение));
				if(true/*МетаданныеЗначения <> Неопределено*/)
				{
					if(true/*Метаданные.Справочники.Найти(МетаданныеЗначения.Имя) <> Неопределено*/)
					{
						if(true/*Элемент.Значение.ЭтоГруппа*/)
						{
							//Отбор[ИмяПоля].ВидСравнения = ВидСравнения.ВИерархии;
						}
					}
				}
				if(true/*НЕ (НЕ ЗначениеЗаполнено(Элемент.Значение) или (ТипЗнч(Элемент.Значение) = Тип("СписокЗначений") и Элемент.Значение.Количество() = 0))*/)
				{
					//Отбор[ИмяПоля].Использование = Истина;
				}
			}
		}
		// ПолеНастройкиПриИзменении()
		// Процедура-обработчик изменения поля настройки С

		public void ПолеНастройкиСПриИзменении(/*Элемент, Отбор, СтруктураСвязиЭУсДанными=Неопределено*/)
		{
			//Поз = Найти(Элемент.Имя, "ПолеНастройкиC");
			if(true/*Поз>0*/)
			{
				if(true/*ТипЗнч(СтруктураСвязиЭУсДанными)= Тип("Структура")*/)
				{
					/*// Имяполя отбора найдем из пути к данным
*/
					//ПутьКДанным="";
					if(true/*СтруктураСвязиЭУсДанными.Свойство(Элемент.Имя, ПутьКДанным)*/)
					{
						//ПутьКДанным = Сред(ПутьКДанным, Найти(ПутьКДанным, "Отбор.")+СтрДлина("Отбор."));
						//ИмяПоля = Лев(ПутьКДанным, Найти(ПутьКДанным, ".")-1);
					}
				}
				if(true/*ЗначениеЗаполнено(Элемент.Значение)*/)
				{
					//Отбор[ИмяПоля].Использование = Истина;
				}
			}
		}
		// ПолеНастройкиСПриИзменении()
		// Процедура-обработчик изменения поля настройки ПО

		public void ПолеНастройкиПоПриИзменении(/*Элемент, Отбор, СтруктураСвязиЭУсДанными=Неопределено*/)
		{
			//Поз = Найти(Элемент.Имя, "ПолеНастройкиПо");
			if(true/*Поз>0*/)
			{
				if(true/*ТипЗнч(СтруктураСвязиЭУсДанными)= Тип("Структура")*/)
				{
					/*// Имяполя отбора найдем из пути к данным
*/
					//ПутьКДанным="";
					if(true/*СтруктураСвязиЭУсДанными.Свойство(Элемент.Имя, ПутьКДанным)*/)
					{
						//ПутьКДанным = Сред(ПутьКДанным, Найти(ПутьКДанным, "Отбор.")+СтрДлина("Отбор."));
						//ИмяПоля = Лев(ПутьКДанным, Найти(ПутьКДанным, ".")-1);
					}
				}
				if(true/*ЗначениеЗаполнено(Элемент.Значение)*/)
				{
					//Отбор[ИмяПоля].Использование = Истина;
				}
			}
		}
		// ПолеНастройкиПоПриИзменении()
		// Процедура-обработчик изменения поля вида сравнения

		public void ПолеВидаСравненияПриИзменении(/*Элемент, ЭлементыФормы*/)
		{
			//ИмяОтбора = Сред(Элемент.Имя, Найти(Элемент.Имя, "ПолеВидаСравнения")+СтрДлина("ПолеВидаСравнения"));
			/*// Управление полями настройки в зависимости от вида сравнения
*/
			if(true/*Элемент.Значение = ВидСравнения.Интервал
			ИЛИ Элемент.Значение = ВидСравнения.ИнтервалВключаяГраницы 
			ИЛИ Элемент.Значение = ВидСравнения.ИнтервалВключаяНачало 
			ИЛИ Элемент.Значение = ВидСравнения.ИнтервалВключаяОкончание*/)
			{
				if(true/*ЭлементыФормы.Найти("ПолеНастройки" + ИмяОтбора) <> НеОпределено*/)
				{
					//ЭлементыФормы["ПолеНастройки"+ИмяОтбора].Видимость = Ложь;
				}
				if(true/*ЭлементыФормы.Найти("ПолеНастройкиС" + ИмяОтбора) <> НеОпределено*/)
				{
					//ЭлементыФормы["ПолеНастройкиС"+ИмяОтбора].Видимость = Истина;
				}
				if(true/*ЭлементыФормы.Найти("ПолеНастройкиПо" + ИмяОтбора) <> НеОпределено*/)
				{
					//ЭлементыФормы["ПолеНастройкиПо"+ИмяОтбора].Видимость = Истина;
				}
			}
		}
		// ПолеВидаСравненияПриИзменении()
		// Формирует текст-заголовок формы отчета

		public object СформироватьЗаголовокОсновнойФормы(/*ДатаНач, ДатаКон, НазваниеОтчета, РежимВводаПериода*/)
		{
			/*// Вывод заголовка, описателя периода и фильтров и заголовка
*/
			if(true/*РежимВводаПериода =  0*/)
			{
				/*// произвольный период
*/
				if(true/*ДатаНач = '00010101000000' И ДатаКон = '00010101000000'*/)
				{
					//ОписаниеПериода     = "Период не установлен";
				}
			}
			if(true/*НЕ ЗначениеЗаполнено(ОписаниеПериода)*/)
			{
			}
			return null;
		}
		// СформироватьЗаголовокОсновнойФормы()
		// Формирует список регистров остатков
		//
		// Параметры:
		//	Нет.
		//
		// Возвращаемое значение:
		//	список значений, содержащийимена всех регистров остатков
		//

		public object ПолучитьСписокРегистровНакопления(/**/)
		{
			//СписокРегистровОстатков = Новый СписокЗначений;
			return null;
		}
		// ПолучитьСписокРегистровНакопления()
		// Формирует список регистров остатков
		//
		// Параметры:
		//	Нет.
		//
		// Возвращаемое значение:
		//	список значений, содержащийимена всех регистров остатков
		//

		public object ПолучитьСписокРегистровОстатков(/**/)
		{
			//СписокРегистровОстатков = Новый СписокЗначений;
			return null;
		}
		// ПолучитьСписокРегистровОстатков()
		// Формирует список допустимых значений Вида Сравнения
		//
		// Параметры:
		//	ОпТипов - Описание Типов поля
		//
		// Возвращаемое значение:
		//	список значений, содержащийимена всех регистров остатков
		//

		public object ПолучитьСписокВидовСравненияПоТипу(/*ОпТипов*/)
		{
			//ТаблицаДоступныхЗначений = Новый ТаблицаЗначений;
			//ТаблицаДоступныхЗначений.Колонки.Добавить("ВидСравнения");
			//ТаблицаДоступныхЗначений.Колонки.Добавить("ЧислоВида");
			//ТаблицаДоступныхЗначений.Свернуть("ВидСравнения", "ЧислоВида");
			//СписокВидовСравнения = Новый СписокЗначений;
			//КолТипов = ОпТипов.Типы().Количество();
			return null;
		}
		//
		// Процедура инициализирует отправку печатного документа по электронной почте
		//
		// Параметры:
		//  Документ - табличный документ
		//  ОбъектПечати - ДокументСсылка, СправочникСсылка, СписокЗначений - объекты из которых вызвана печать. Параметр тип список значений содержит объекты печати.
		//
		// Возвращаемое значение:
		//  Нет.
		//

		public void ОтправитьДокументПоЭлектроннойПочте(/*Документ, ИмяФайлаВложения = "", ОбъектПечати = Неопределено*/)
		{
			if(true/*НЕ Константы.ИспользованиеВстроенногоПочтовогоКлиента.Получить()*/)
			{
				/*ОбщегоНазначения.СообщитьОбОшибке("Отправлять документы по электронной почте можно только из встроенного почтового клиента.
		|В настоящее время в настройках параметров учета установлено использование основного почтового клиента операционной системы.");*/
				//Предупреждение("Операция не выполнена");
				//Сообщить("Операция не выполнена");
			}
			//ФормаОтправкиДокумента = ПолучитьОбщуюФорму("НастройкаОтправкиОтчета");
			//ФормаОтправкиДокумента.Отчет            = Документ;
			//ФормаОтправкиДокумента.ИмяФайлаВложения = СтрЗаменить(ИмяФайлаВложения, ".", " ");
			//ФормаОтправкиДокумента.ТемаСообщения    = ИмяФайлаВложения;
			//ФормаОтправкиДокумента.ОбъектПечати     = ОбъектПечати;
			//ФормаОтправкиДокумента.ОткрытьМодально();
		}
		// Функция формирует необходимую структуру данных для создания на форме отчета панели
		// с переключателями типов учета. По умолчанию создается панель с 4-мя видами учета (упр, бух, нал, МСФО).
		//

		public object ПодготовитьДанныеДляСозданияПанелиВидыУчета(/*ДействиеПриИзменении, Знач ВидыУчета = "Упр,Бух,Нал,МСФО"*/)
		{
			//ПанельВидыУчета = Новый Массив;
			/*// Имя
*/
			/*// Заголовок
*/
			/*// Ширина
*/
			//Новый Массив);
			/*// СоставГруппы
*/
			//ВидыУчета = "," + СтрЗаменить(ВидыУчета, " ", "") + ",";
			if(true/*Найти(ВидыУчета, ",Упр,") > 0*/)
			{
				/*// Имя
*/
				/*// Заголовок
*/
				/*// Ширина
*/
				/*// Данные
*/
				/*// Выбираемое значение
*/
				/*// Первый в группе
*/
				/*// Видимость
*/
				/*// Доступность
*/
				//ДействиеПриИзменении);
				/*// Действие при изменении
*/
				//ГруппаЭлементов.СоставГруппы.Добавить(ЭлементГруппы);
			}
			if(true/*Найти(ВидыУчета, ",Бух,") > 0*/)
			{
				/*// Имя
*/
				/*// Заголовок
*/
				/*// Ширина
*/
				/*// Данные
*/
				/*// Выбираемое значение
*/
				/*// Первый в группе
*/
				/*// Видимость
*/
				/*// Доступность
*/
				//ДействиеПриИзменении);
				/*// Действие при изменении
*/
				//ГруппаЭлементов.СоставГруппы.Добавить(ЭлементГруппы);
			}
			if(true/*Найти(ВидыУчета, ",Нал,") > 0*/)
			{
				/*// Имя
*/
				/*// Заголовок
*/
				/*// Ширина
*/
				/*// Данные
*/
				/*// Выбираемое значение
*/
				/*// Первый в группе
*/
				/*// Видимость
*/
				/*// Доступность
*/
				//ДействиеПриИзменении);
				/*// Действие при изменении
*/
				//ГруппаЭлементов.СоставГруппы.Добавить(ЭлементГруппы);
			}
			if(true/*Найти(ВидыУчета, ",МСФО,") > 0*/)
			{
				/*// Имя
*/
				/*// Заголовок
*/
				/*// Ширина
*/
				/*// Данные
*/
				/*// Выбираемое значение
*/
				/*// Первый в группе
*/
				/*// Видимость
*/
				/*// Доступность
*/
				//ДействиеПриИзменении);
				/*// Действие при изменении
*/
				//ГруппаЭлементов.СоставГруппы.Добавить(ЭлементГруппы);
			}
			//ПанельВидыУчета.Добавить(ГруппаЭлементов);
			return null;
		}
		// ПодготовитьДанныеДляСозданияПанелиВидыУчета()
		////////////////////////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ОТЧЕТОВ НА ПОСТРОИТЕЛЕ ОТЧЕТОВ
		// В текст для построителя отчета вставляет свойства и категории

		public void ДобавитьВТекстСвойстваИКатегории(/*ТаблицаПолей, Текст, СтруктураПредставлениеПолей, мСоответствиеНазначений, 
	                                          СтруктураПараметры, ТекстИсточникиСведений="", ТекстПоляКатегорий="", 
	                                          ТекстПоляСвойств="", ТекстПоляСгруппироватьПо = "", 
	                                          ЗаменятьСвойства = "//СВОЙСТВА", ЗаменятьКатегории = "//КАТЕГОРИИ", 
	                                          ЗаменятьСоединения = "//СОЕДИНЕНИЯ", ЗаменятьСгруппироватьПо = "//СГРУППИРОВАТЬПО",
	                                          ИдентификаторыПараметровДляОтборовПоКатегориям = ""*/)
		{
			/*// Добавляемые фрагменты запроса
*/
			//ТекстПоляКатегорийДляГруппировки ="";
			//ТекстПоляСвойствДляГруппировки = "";
			//ТекстИсточникиСведений ="";
			//ТекстПоляКатегорий = "";
			//ТекстПоляСвойств = "";
			if(true/*НЕ ТипЗнч(ИдентификаторыПараметровДляОтборовПоКатегориям)=Тип("Структура")*/)
			{
				//ИдентификаторыПараметровДляОтборовПоКатегориям = Новый Структура;
			}
			//Индекс = 0;
			//Выборка = ПланыВидовХарактеристик.СвойстваОбъектов.Выбрать();
			while(true/*Выборка.Следующий()*/)
			{
				if(true/*Выборка.ЭтоГруппа ИЛИ Выборка.ПометкаУдаления*/)
				{
				}
				//НайденнаяСтрока = ТаблицаПолей.Найти(Выборка.НазначениеСвойства, "Назначение");
				if(true/*НайденнаяСтрока <> Неопределено*/)
				{
					/*// Для списка всех полей
*/
					/*ТекстПоляСвойств = ТекстПоляСвойств + ",
			|	Свойство"+Индекс+".Значение" + " КАК " + "Свойство"+Индекс+"Значение";*/
					/*ТекстПоляСвойствДляГруппировки = ТекстПоляСвойствДляГруппировки + ",
			|	Свойство"+Индекс+".Значение";*/
					/*// Источник для свойств
*/
					/*ТекстИсточникиСведений = ТекстИсточникиСведений + Символы.ПС + 
			"{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК Свойство"+Индекс+"
			|ПО Свойство"+Индекс+".Объект = " + НайденнаяСтрока.ПутьКДанным + "
			|И  Свойство"+Индекс+".Свойство = &ПараметрСвойство"+Индекс+ "}";*/
					//СтруктураПараметры.Вставить("ПараметрСвойство"+Индекс, Выборка.Ссылка);
					//СтруктураПредставлениеПолей.Вставить("Свойство"+Индекс+"Значение", Выборка.Наименование + " (св-во " + НайденнаяСтрока.Представление + ")");
					//мСоответствиеНазначений.Вставить(Выборка.Наименование + " (св-во " + НайденнаяСтрока.Представление + ")", Выборка.Ссылка);
					//Индекс = Индекс + 1;
				}
			}
			/*;

	Индекс = 0;*/
			//Индекс = 0;
			/*//ВЫБРАТЬ РАЗЛИЧНЫЕ съедает достаточно много ресурсов - поэтому если 
*/
			/*//не надо, то обойдемся без него.
*/
			if(true/*ТекстПоляКатегорийДляГруппировки <> ""*/)
			{
				//Текст = СтрЗаменить(Текст, "//РАЗЛИЧНЫЕ", "РАЗЛИЧНЫЕ");
			}
			//Текст = СтрЗаменить(Текст, ЗаменятьСвойства, ТекстПоляСвойств);
			//Текст = СтрЗаменить(Текст, ЗаменятьКатегории, ТекстПоляКатегорий);
			//Текст = СтрЗаменить(Текст, ЗаменятьСоединения, ТекстИсточникиСведений);
			//Текст = СтрЗаменить(Текст, ЗаменятьСгруппироватьПо, ТекстПоляСвойствДляГруппировки + ТекстПоляКатегорийДляГруппировки);
		}
		// ДобавитьВТекстСвойстваИКатегории()
		// В текст запроса построителя вносит изменения с целью выборки всей информации о физлице
		// Параметры:
		// 	ТекстЗапроса 				- модифицируемый текст запроса построителя,
		// 	СтруктураПредставлениеПолей - структура, в которую ложится представление добавленных полей физлица,
		// 	СтруктураФорматаПолей 		- структура, в которую ложится формат добавленных полей физлица,
		// 	ИмяОсновнойВыборки 			- имя таблицы запроса, к которой присоединяется информация о физлице
		// 	ИмяПоляФизЛицо 				- имя реквизита основной выборки, имеющего тип "СправочникСсылка.ФизическиеЛица"

		public void ДобавитьВТекстПостроителяДанныеОФизлице(/*ТекстЗапроса, СтруктураПредставлениеПолей, СтруктураФорматаПолей, ИмяОсновнойВыборки, ИмяПоляФизЛицо*/)
		{
			//ПолноеИмяПоляФизЛицо = ИмяОсновнойВыборки + "." + ИмяПоляФизЛицо;
			//ТипДата = Тип("Дата");
			/*// данные о физлице
*/
			/*ТекстОписаниеПолей = ",
	|	" + ПолноеИмяПоляФизЛицо +".ДатаРождения 		КАК ДатаРождения,
	|	" + ПолноеИмяПоляФизЛицо +".ИНН 				КАК ИНН,
	|	" + ПолноеИмяПоляФизЛицо +".КодИМНС 			КАК КодИМНС,
	|	" + ПолноеИмяПоляФизЛицо +".Комментарий 		КАК Комментарий,
	|	" + ПолноеИмяПоляФизЛицо +".СтраховойНомерПФР КАК СтраховойНомерПФР,
	|	" + ПолноеИмяПоляФизЛицо +".Пол 				КАК Пол,
	|	" + ПолноеИмяПоляФизЛицо +".МестоРождения 		КАК МестоРождения,
	|	" + ПолноеИмяПоляФизЛицо +".МестоРожденияКодПоОКАТО КАК МестоРожденияКодПоОКАТО,
	|	ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, " + ПолноеИмяПоляФизЛицо + ".Наименование) КАК ФиоПолное,
	|	ЕСТЬNULL(ФИОФизЛиц.Фамилия + ВЫБОР КОГДА ПОДСТРОКА(ФИОФизЛиц.Имя, 1, 1) <> """" ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛиц.Имя, 1, 1) + ""."" ИНАЧЕ """" КОНЕЦ + ВЫБОР КОГДА ПОДСТРОКА(ФИОФизЛиц.Отчество, 1, 1) <> """" ТОГДА "" "" + ПОДСТРОКА(ФИОФизЛиц.Отчество, 1, 1) + ""."" ИНАЧЕ """" КОНЕЦ, " + ПолноеИмяПоляФизЛицо +".Наименование) КАК ФиоКраткое,
	|	ВЫБОР КОГДА ГОД(" + ПолноеИмяПоляФизЛицо +".ДатаРождения) = 1 ТОГДА 0 ИНАЧЕ &ДатаАктуальности_Год - ГОД(" + ПолноеИмяПоляФизЛицо +".ДатаРождения) + ВЫБОР КОГДА (Месяц(" + ПолноеИмяПоляФизЛицо +".ДатаРождения)*100+День(" + ПолноеИмяПоляФизЛицо +".ДатаРождения)) > (&ДатаАктуальности_Месяц*100+&ДатаАктуальности_День) ТОГДА -1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК Возраст,";*/
			/*ТекстСоединения = "
	|		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаАктуальности) КАК ФИОФизЛиц
	|		ПО " + ПолноеИмяПоляФизЛицо + " = ФИОФизЛиц.ФизЛицо}";*/
			/*// данные из табличных частей физлица
*/
			//МетаданныеФизЛица = Метаданные.Справочники.ФизическиеЛица;
			/*// данные из регистров сведений о физлице
*/
			//МассивРегистров = Новый Массив;
			//МассивРегистров.Добавить("ПаспортныеДанныеФизЛиц");
			//МассивРегистров.Добавить("ГражданствоФизЛиц");
			//МассивРегистров.Добавить("ВоинскийУчет");
			//МассивРегистров.Добавить("СемейноеПоложениеФизЛиц");
			//МассивРегистров.Добавить("СведенияОбИнвалидностиФизлиц");
			//МассивРегистров.Добавить("СведенияОСтажеРаботыНаСевере");
			//ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДАННЫЕ О ФИЗЛИЦЕ: ПОЛЯ", Лев(ТекстОписаниеПолей,СтрДлина(ТекстОписаниеПолей)-1));
			//ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДАННЫЕ О ФИЗЛИЦЕ: СОЕДИНЕНИЯ", ТекстСоединения);
			/*// ПРЕДСТАВЛЕНИЕ ПОЛЕЙ
*/
			/*//данные физлица
*/
			//СтруктураПредставлениеПолей.Вставить("ДатаРождения", "Дата рождения");
			//СтруктураПредставлениеПолей.Вставить("КодИМНС", "Код ИМНС");
			//СтруктураПредставлениеПолей.Вставить("СтраховойНомерПФР", "Страховой номер ПФР");
			//СтруктураПредставлениеПолей.Вставить("МестоРождения", "Место рождения");
			//СтруктураПредставлениеПолей.Вставить("МестоРожденияКодПоОКАТО", "Код по ОКАТО места рождения");
			//СтруктураПредставлениеПолей.Вставить("ФиоПолное", "ФИО (полностью)");
			//СтруктураПредставлениеПолей.Вставить("ФиоКраткое", "Фамилия И. О. ");
			/*// трудовая деятельность
*/
			//СтруктураПредставлениеПолей.Вставить("ТрудоваяДеятельностьОрганизация", "Трудовая деятельность: организация");
			//СтруктураПредставлениеПолей.Вставить("ТрудоваяДеятельностьДатаНачала", "Трудовая деятельность: начало работы");
			//СтруктураПредставлениеПолей.Вставить("ТрудоваяДеятельностьДатаОкончания", "Трудовая деятельность: окончание работы");
			//СтруктураПредставлениеПолей.Вставить("ТрудоваяДеятельностьДолжность", "Трудовая деятельность: должность");
			/*// ФОРМАТ ПОЛЕЙ
*/
			//СтруктураФорматаПолей.Вставить("ДатаРождения", "ДФ=dd.MM.yyyy");
		}
		// ДобавитьВТекстПостроителяДанныеОФизлице()
		// форматируем числа интервалов для формирования строк запроса
		//
		// Параметры:
		//	Значение       - форматируемое число
		//
		// Возвращаемое значение:
		//	строка - отформатированная число
		//

		public object ЗнчВТекстЗапроса(/*Значение*/)
		{
			if(true/*ТипЗнч(Значение)=Тип("Число")*/)
			{
				//Результат = Формат(Значение,"ЧГ=0;ЧРД=.;ЧН=");
			}
			return null;
		}
		// Процедура заполняет представления элементов всех коллекций построителя отчета на
		//  основании соответствия имен и представдлений переданных в параметре
		//
		// Параметры
		//  СтруктураСоответствияИмен - Структура, ключ - имя поля, значение - представление поля
		//  ПостроительОтчета         - ПостроительОтчета
		//
		//  Возвращаемое значение
		//   НЕТ
		//

		public void ЗаполнитьПредставленияПолей(/*СтруктураСоответствияИмен, ПостроительОтчета*/)
		{
			//СтруктураКоллекцийПостроителяОтчета = Новый Структура("ДоступныеПоля, ВыбранныеПоля, ИзмеренияКолонки, ИзмеренияСтроки, Отбор");
		}
		// ЗаполнитьПредставленияПолей()
		// Добавляет в параметры построителя отчета использованные в отборах категории
		//
		// Параметры:
		//	ПостроительОтчета              - Построитель, отбор которого обрабатывается, и в Параметры
		//                                    которого добавляются категории
		//	СтруктураДляОтбораПоКатегориям - структура, связывающая пути к данным Отборов Построителя и
		//                                    идентицфикаторы параметров
		//
		// Возвращаемое значение:
		//	Истина, если добавление параметров произошло успешно
		//	Ложь, если есть повторный отбор по одной и той же категории.
		//
		// Вообще-то, повторный отбор по одной и той же категории невозможен не всегда -
		//  можно отобрать два раза с видом сравнения "не равно". Контроль возвращаемого
		//  этой функцией значения отключить можно, но нужно после этого понимать,
		//  что два отбора по одной категории с видом сравнения "Равно" приведут к тому,
		//  что отчет окажется пустым.
		//

		public object ЗадатьПараметрыОтбораПоКатегориям(/*ПостроительОтчета, СтруктураДляОтбораПоКатегориям*/)
		{
			if(true/*ТипЗнч(СтруктураДляОтбораПоКатегориям) = ТипЗнч(Новый Структура)*/)
			{
			}
			return null;
		}
		// ЗадатьПараметрыОтбораПоКатегориям()
		// Устанавливает типы значений доступных полей отбора, соответствующих свойствам и категориям
		//
		// Параметры:
		//	ПостроительОтчета      - ПостроительОтчета, его доступные поля анализируются
		//	ТекстПоляКатегорий,
		//	ТекстПоляСвойств       - Строки, используются для определений того, является ли
		//                            ДоступноеПоле значением свойства или категрии
		//	мСоответствиеНазначений - Соответствие между представлениями и ПВХ,
		//                            используется для установки правильных типов Свойств
		//

		public void УстановитьТипыЗначенийСвойствИКатегорийДляОтбора(/*ПостроительОтчета, ТекстПоляКатегорий, ТекстПоляСвойств, мСоответствиеНазначений, СтруктураПредставлениеПолей*/)
		{
			//ВозможныеТипыСвойств = Метаданные.ПланыВидовХарактеристик.СвойстваОбъектов.Тип.Типы();
			//ИндексТекущегоВозможногоТипа = 0;
		}
		// УстановитьТипыЗначенийСвойствИКатегорийДляОтбора()
		// Процедура добавляет показатель в выбранные поля. Вызывается перед выполнением запроса.
		//
		// Параметры:
		//	ИмяПоляПостроителя - строка, идентификатор поля построителя
		//	ПостроительОтчета  - Построитель отчета
		//
		// Устанавливает связь полей отбора на основной форме с отбором

		public void УстановитьСвязьПолейБыстрогоОтбораНаФорме(/*ЭлементыФормы, Отбор, СтруктураСвязиЭлементовСДанными = Неопределено, ПутьКОтбору = "ОтчетОбъект.ПостроительОтчета.Отбор"*/)
		{
			//Инд=0;
			//СтруктураНаборовСвязываемыхЭлементов = Новый Структура;
			/*//Перебираем элементы формы
*/
			while(true/*Инд<ЭлементыФормы.Количество()*/)
			{
				//Элемент = ЭлементыФормы[Инд];
				if(true/*(Найти(Элемент.Имя, "ПолеНастройки")
			ИЛИ Найти(Элемент.Имя, "ФлажокНастройки")
			ИЛИ Найти(Элемент.Имя, "ПолеВидаСравнения"))*/)
				{
					/*//Если имя элемента формы содержит что-то, нас интересующее,
*/
					/*//добавляем его в соответствующую структуру
*/
					/*//Это может плохо работать, например, для "ПолеНастройкиПоПорядку"
*/
					/*//процедура решит, что это "ПолеНастройкиПо" для "Порядку". Вывод - используем маленькую
*/
					/*//букву - "ПолеНастройкиПопопрядку"!!!
*/
					if(true/*(Найти(Элемент.Имя, "ПолеНастройкиПо")) и (ВРег(Сред(Элемент.Имя, 16, 1)) = Сред(Элемент.Имя, 16, 1))*/)
					{
						//ИмяПоляОтбора = СтрЗаменить(Элемент.Имя, "ПолеНастройкиПо", "");
					}
					//СтрНабор = "";
					if(true/*НЕ СтруктураНаборовСвязываемыхЭлементов.Свойство(ИмяПоляОтбора)*/)
					{
						/*//Ключами структуры "СтруктураНаборовСвязываемыхЭлементов" являются 
*/
						/*//идентификаторы полей отбора, значениями - структуры СтрНабор.
*/
						//СтрНабор = Новый Структура;
						//СтруктураНаборовСвязываемыхЭлементов.Вставить(ИмяПоляОтбора, СтрНабор);
					}
					/*//В СтрНабор мы складываем в качестве ключа, например, "ПолеНастройки", 
*/
					/*//значение - ЭУ формы. В общем, откусываем идентификатор отбора
*/
					//СтрНабор.Вставить(СтрЗаменить(Элемент.Имя, ИмяПоляОтбора, ""), Элемент);
				}
				//Инд=Инд+1;
			}
			/*// Структура для хранения связи э.у. с данными
*/
			//СтруктураСвязиЭлементовСДанными = Новый Структура;
		}
		// УстановитьСвязьПолейБыстрогоОтбораНаФорме()
		// Заполняет отборы ПостроителяОтчета
		//
		// Параметры:
		//	МассивОтбора - Массив, содержащий идентификаторы отборов

		public void ЗаполнитьОтбор(/*МассивОтбора, ПостроительОтчета*/)
		{
		}
		// ЗаполнитьОтбор()
		// Функция формирует строку представления отборов объекта Отбор
		//
		// Параметры
		//  Отбор - Отбор, по которому формируем строку
		//
		// Возвращаемое значение:
		//   Строка - представление отбора
		//

		public object СформироватьСтрокуОтборов(/*Отбор*/)
		{
			if(true/*ТипЗнч(Отбор) <> Тип("Отбор")*/)
			{
			}
			//СтрокаОтборов = "";
			return null;
		}
		// СформироватьСтрокуОтборов()
		// Функция формирует строку представления измерений построителя отчета
		//
		// Параметры
		//  КоллекцияИзмерений - ИзмеренияПостроителяОтчета, коллекция измерений построителя отчета
		//
		// Возвращаемое значение:
		//   Строка - представление измерений построителя отчета
		//

		public object СформироватьСтрокуИзмерений(/*КоллекцияИзмерений*/)
		{
			if(true/*ТипЗнч(КоллекцияИзмерений) <> Тип("ИзмеренияПостроителяОтчета")*/)
			{
			}
			//СтрокаИзмерений = "";
			return null;
		}
		// СформироватьСтрокуГруппировок()
		// Функция формирует строку представления порядков построителя отчетов
		//
		// Параметры
		//  КоллекцияПорядок - Порядок, коллекция порядков построителя отчета
		//
		// Возвращаемое значение:
		//   Строка - представление порядков построителя отчета
		//

		public object СформироватьСтрокуПорядка(/*КоллекцияПорядок*/)
		{
			if(true/*ТипЗнч(КоллекцияПорядок) <> Тип("Порядок")*/)
			{
			}
			//СтрокаПорядка = "";
			return null;
		}
		// СформироватьСтрокуПорядка()
		// Процедура используется в формах настройки отчетов для выбора категории
		// или для подбора категорий в список. Использование обусловлено тем,
		// что Категории при выборе надо указывать владельца
		//
		// Параметры:
		//	Элемент - элемент управления, в который выбирают категорию
		//	Назначение - элемент ПВХ, назначение для категории, известное форме настройки
		//	ФормаНастройки - сама форма
		//	СтандартнаяОбработка - необходимый параметр процедуры - обработчика события
		//

		public void ОсуществитьВыборКатегории(/*Элемент, Назначение, ФормаНастройки, СтандартнаяОбработка*/)
		{
			if(true/*ТипЗнч(Элемент.Значение) <> ТипЗнч(Новый СписокЗначений)*/)
			{
				//СтандартнаяОбработка = Ложь;
				//ФормаВыбораКатегории= Справочники.КатегорииОбъектов.ПолучитьФормуВыбора(, Элемент,);
				//ФормаВыбораКатегории.РежимВыбора = Истина;
				//ФормаВыбораКатегории.Отбор.НазначениеКатегории.Установить(Назначение);
				//ФормаВыбораКатегории.Открыть();
			}
		}
		// ОсуществитьВыборКатегории()
		// Процедура используется в формах настройки отчетов для выбора значения свойства
		// или для подбора значений свойств в список. Использование обусловлено тем,
		// что свойству при выборе надо указывать не только тип значения, но еще и владельца
		//
		// Параметры:
		//	Элемент - элемент управления, в который выбирают свойство
		//	Назначение - элемент ПВХ, назначение для свойства, известное форме настройки
		//	ФормаНастройки - сама форма
		//	СтандартнаяОбработка - необходимый параметр процедуры - обработчика события
		//

		public void ОсуществитьВыборСвойства(/*Элемент, Свойство, ФормаНастройки, СтандартнаяОбработка*/)
		{
			/*// Ограничение списка свойств
*/
			if(true/*ТипЗнч(Элемент.Значение) <> Тип("СписокЗначений")*/)
			{
				if(true/*Свойство.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов"))*/)
				{
				}
			}
		}
		// ОсуществитьВыборСвойства()
		// Функция определяет, доступен ли элемент отбора с указанным именем для изменения имени, удаления, переименования
		// используется в формах настройки отчетов на базе Построителя Отчетов для того, чтобы не удалить в форме
		// настройки отбор, связанный с "быстрым отбором", находящимся на основной форме.
		//
		// Параметры:
		//	ИмяЭлементаОтбора               - строка, содержит имя элемента отбора.
		//	СтруктураСвязиЭлементовСДанными - структура, возвращаемая в один из параметров методом
		//                                    отУстановитьСвязьПолейБыстрогоОтбораНаФорме
		//

		public object ОтборСвязанСДанными(/*ИмяЭлементаОтбора, СтруктураСвязиЭлементовСДанными*/)
		{
			if(true/*СтруктураСвязиЭлементовСДанными.Свойство("ФлажокНастройки"+ИмяЭлементаОтбора)
		ИЛИ СтруктураСвязиЭлементовСДанными.Свойство("ПолеВидаСравнения"+ИмяЭлементаОтбора)
		ИЛИ СтруктураСвязиЭлементовСДанными.Свойство("ПолеНастройки"+ИмяЭлементаОтбора)
		ИЛИ СтруктураСвязиЭлементовСДанными.Свойство("ПолеНастройкиС"+ИмяЭлементаОтбора)
		ИЛИ СтруктураСвязиЭлементовСДанными.Свойство("ПолеНастройкиПо"+ИмяЭлементаОтбора)*/)
			{
			}
			return null;
		}
		//отОтборСвязанСДанными()
		////////////////////////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАБОТЫ С КОЛОНТИТУЛАМИ
		// Чтение настроек колонтитулов из константы. Если константа не заполнена, то формируются пустые настройки.
		//
		// Параметры
		//  Нет
		//
		// Возвращаемое значение:
		//   Структура   – Настройки колонтитулов
		//

		public object ПолучитьНастройкиКолонтитулов(/**/)
		{
			//Настройка = Константы.НастройкиКолонтитуловПоУмолчанию.Получить().Получить();
			if(true/*ТипЗнч(Настройка) <> Тип("Структура")*/)
			{
				/*// Если константа не заполнена, то заполним структуру настройками пустых колонтитулов
*/
				//Настройка = Новый Структура;
				//Верхний = Новый Структура;
				//Нижний = Новый Структура;
				//Верхний.Вставить("Выводить", Ложь);
				//Верхний.Вставить("НачальнаяСтраница", 1);
				//Верхний.Вставить("ТекстСлева",   "");
				//Верхний.Вставить("ТекстВЦентре", "");
				//Верхний.Вставить("ТекстСправа",  "");
				//Нижний.Вставить("Выводить", Ложь);
				//Нижний.Вставить("НачальнаяСтраница", 1);
				//Нижний.Вставить("ТекстСлева",   "");
				//Нижний.Вставить("ТекстВЦентре", "");
				//Нижний.Вставить("ТекстСправа",  "");
				//Настройка.Вставить("ВерхнийКолонтитул", Верхний);
				//Настройка.Вставить("НижнийКолонтитул",  Нижний);
			}
			return null;
		}
		// ПолучитьНастройкиКолонтитулов()
		// Запись настроек колонтитулов в константу
		//
		// Параметры
		//  Настройка  – Структура – Настройка колонтитулов
		//

		public void ЗаписатьНастройкиКолонтитулов(/*Настройка*/)
		{
			//Константы.НастройкиКолонтитуловПоУмолчанию.Установить(Новый ХранилищеЗначения(Настройка));
		}
		// ЗаписатьНастройкиКолонтитулов()
		// Проставление в тексте вместо шаблонов, значений
		//
		// Параметры
		//  Текст           – Строка – Исходный текст шаблона
		//  НазваниеОтчета  – Строка – Название отчета
		//  Пользователь    – Строка – Имя пользователя
		//
		// Возвращаемое значение:
		//   Строка   – результурующий текст для колонтитула
		//

		public object ЗаполнитьТекстКолонтитула(/*Текст, НазваниеОтчета, Пользователь*/)
		{
			//Результат = Текст;
			//Результат = СтрЗаменить(Результат, "[&НазваниеОтчета]", НазваниеОтчета);
			//Результат = СтрЗаменить(Результат, "[&Пользователь]", Пользователь);
			return null;
		}
		// ЗаполнитьТекстКолонтитула()
		// Установка колонтитулов для отчета
		//
		// Параметры
		//  ТабличныйДокумент  – ТабличныйДокумент – Отчет, у которого необходимо установить колонтитулы
		//  НазваниеОтчета     – Строка            – Название отчета для вывода в колонтитул
		//  Пользователь       – Строка            – Имя пользователя для вывода в колонтитул
		//

		public void УстановитьКолонтитулыПоУмолчанию(/*ТабличныйДокумент, НазваниеОтчета, Пользователь*/)
		{
			//Настройка = ПолучитьНастройкиКолонтитулов();
			//ТабличныйДокумент.ВерхнийКолонтитул.Выводить          = Настройка.ВерхнийКолонтитул.Выводить;
			//ТабличныйДокумент.ВерхнийКолонтитул.НачальнаяСтраница = Настройка.ВерхнийКолонтитул.НачальнаяСтраница;
			//ТабличныйДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ;
			//ТабличныйДокумент.ВерхнийКолонтитул.ТекстСлева   = ЗаполнитьТекстКолонтитула(Настройка.ВерхнийКолонтитул.ТекстСлева, НазваниеОтчета, Пользователь);
			//ТабличныйДокумент.ВерхнийКолонтитул.ТекстВЦентре = ЗаполнитьТекстКолонтитула(Настройка.ВерхнийКолонтитул.ТекстВЦентре, НазваниеОтчета, Пользователь);
			//ТабличныйДокумент.ВерхнийКолонтитул.ТекстСправа  = ЗаполнитьТекстКолонтитула(Настройка.ВерхнийКолонтитул.ТекстСправа, НазваниеОтчета, Пользователь);
			//ТабличныйДокумент.НижнийКолонтитул.Выводить          = Настройка.НижнийКолонтитул.Выводить;
			//ТабличныйДокумент.НижнийКолонтитул.НачальнаяСтраница = Настройка.НижнийКолонтитул.НачальнаяСтраница;
			//ТабличныйДокумент.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Верх;
			//ТабличныйДокумент.НижнийКолонтитул.ТекстСлева   = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстСлева, НазваниеОтчета, Пользователь);
			//ТабличныйДокумент.НижнийКолонтитул.ТекстВЦентре = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстВЦентре, НазваниеОтчета, Пользователь);
			//ТабличныйДокумент.НижнийКолонтитул.ТекстСправа  = ЗаполнитьТекстКолонтитула(Настройка.НижнийКолонтитул.ТекстСправа, НазваниеОтчета, Пользователь);
		}
		// УстановитьКолонтитулы()
		// Открыть форму настройки колонтитулов и по завершению работы записать настройки.
		//
		// Параметры
		//  Нет
		//

		public void ОткрытьНастройкуКолонтитулов(/**/)
		{
			//Настройка = ПолучитьНастройкиКолонтитулов();
			//ФормаНастройки = ПолучитьОбщуюФорму("ФормаНастройкиКолонтитулов");
			//Результат = ФормаНастройки.ОткрытьМодально();
			//Результат = ?(Результат = Неопределено, Ложь, Результат);
			if(true/*Результат*/)
			{
				//ЗаписатьНастройкиКолонтитулов(Настройка);
			}
		}
		// ОткрытьНастройкуКолонтитулов()

		public object НайтиВладельцаПоФорме(/*ОтчетОбъект, ЭтаФорма, Элемент, ПолеОтбора, ПолеЗначения*/)
		{
			//ЗначениеВладельца = Неопределено;
			//Отбор = ТиповыеОтчеты.ПолучитьОтборИзФормы(ОтчетОбъект, ЭтаФорма, Элемент);
			if(true/*Отбор.СтрокаОтбора.Поле = ПолеОтбора или ПолеОтбора.НайтиПоЗначению(Отбор.СтрокаОтбора.Поле) <> Неопределено*/)
			{
				//Отбор = ТиповыеОтчеты.ПолучитьОтборИзФормы(ОтчетОбъект, ЭтаФорма, ПолеЗначения);
				if(true/*Отбор <> Неопределено*/)
				{
					//ЗначениеВладельца = Отбор.Значение;
				}
				//Параметр = ТиповыеОтчеты.ПолучитьПараметрИзФормы(ОтчетОбъект, ЭтаФорма, ПолеЗначения);
				if(true/*ЗначениеВладельца = Неопределено и Параметр <> Неопределено*/)
				{
					//ЗначениеВладельца = Параметр.Значение;
				}
				if(true/*ТипЗнч(ЗначениеВладельца) = Тип("СписокЗначений")*/)
				{
					if(true/*ЗначениеВладельца.Количество() > 0*/)
					{
						//ЗначениеВладельца = ЗначениеВладельца.Получить(0).Значение;
					}
				}
			}
			return null;
		}
		// Функция открывает диалог для настройки периода
		//
		// Параметры
		//  ДатаНач - Дата, начало периода
		//  ДатаКон - Дата, конец периода
		//
		// Возвращаемое значение:
		//   Массив - массив с датами начала и окончания выбранного периода
		//

		public object ВвестиПериод(/*ДатаНач, ДатаКон*/)
		{
			//Период = Новый НастройкаПериода;
			//Период.ВариантНастройки = ВариантНастройкиПериода.Интервал;
			//Период.УстановитьПериод(НачалоДня(ДатаНач), ?(НачалоДня(ДатаКон) = Дата("00010101000000"), НачалоДня(ДатаКон), КонецДня(ДатаКон)));
			if(true/*ДатаНач = Дата("00010101000000")*/)
			{
				//Период.ВариантНачала = ВариантГраницыИнтервала.БезОграничения;
			}
			if(true/*ДатаКон = Дата("00010101000000")*/)
			{
				//Период.ВариантОкончания = ВариантГраницыИнтервала.БезОграничения;
			}
			if(true/*НЕ Период.Редактировать()*/)
			{
			}
			if(true/*Период.ВариантНачала = ВариантГраницыИнтервала.БезОграничения*/)
			{
				//ДатаНач = Дата("00010101000000");
			}
			if(true/*Период.ВариантОкончания = ВариантГраницыИнтервала.БезОграничения*/)
			{
				//ДатаКон = Дата("00010101000000");
			}
			//МассивВозврата = Новый Массив;
			//МассивВозврата.Добавить(ДатаНач);
			//МассивВозврата.Добавить(ДатаКон);
			return null;
		}
		// ВвестиПериод()
		// Процедура меняет название полей, содержащих название организации, на учереждение
		//

		public void ЗаменитьНазваниеПолейСхемыКомпоновкиДанных(/*СхемаКомпоновкиДанных*/)
		{
			//Параметр = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Title"));
			//Параметр.Значение = ОбщегоНазначения.ПреобразоватьСтрокуИнтерфейса(Параметр.Значение);
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С НАСТРОЙКАМИ
		// Функция формирует структуру с данными отбора
		//
		// Параметры
		//  Отбор - Отбор
		//
		// Возвращаемое значение:
		//   Структура
		//

		public object ПолучитьСтруктуруОтбора(/*Отбор*/)
		{
			//СтруктураОтбора = Новый Структура();
			return null;
		}
		// ПолучитьСтруктуруОтбора()

		public void ДобавитьВТекстСВойстваОбщие(/*Текст, Знач ТекстПоляСвойств, ЗаменятьСвойстваОбщие="//СВОЙСТВА_ОБЩИЕ"*/)
		{
			//ТекстПоляСвойств=ТекстПоляСвойств+",";
			//ТекстПсевдонимыСвойств = "";
			while(true/*Найти(ТекстПоляСвойств, "КАК")>0*/)
			{
				/*// Псевдоним поля свойства находится между КАК и ,
*/
				//ПсевдонимПоляСвойства = Сред(ТекстПоляСвойств, Найти(ТекстПоляСвойств, "КАК")+4);
				//ПсевдонимПоляСвойства = Лев(ПсевдонимПоляСвойства, Найти(ПсевдонимПоляСвойства, ",")-1);
				//ТекстПсевдонимыСвойств = ТекстПсевдонимыСвойств + ", " + ПсевдонимПоляСвойства;
				//ТекстПоляСвойств = Сред(ТекстПоляСвойств, Найти(ТекстПоляСвойств, "КАК") + СтрДлина(ПсевдонимПоляСвойства)+2);
			}
			/*;
	
	Текст = СтрЗаменить(Текст, ЗаменятьСвойстваОбщие, ТекстПсевдонимыСвойств);*/
		}
		// ДобавитьВТекстСВойстваОбщие()
		// Процедура заполнения начальных настроек по макету для универсального отчета или отчета на базе универсального

		public void ЗаполнитьНачальныеНастройкиПоМакету(/*МакетПараметрыОтчетов, СтруктураПредставлениеПолей, МассивОтбора, Контекст, ТипОтчета*/)
		{
			//ИмяРегистра = Контекст.ИмяРегистра;
			//ПОстроительОтчета = Контекст.ПостроительОтчета;
			//Контекст.Показатели.Очистить();
			/*//Очистим отбор
*/
			while(true/*ПостроительОтчета.Отбор.Количество()>0*/)
			{
				//ПостроительОтчета.Отбор.Удалить(0);
			}
			/*//Очистим порядок
*/
			while(true/*ПостроительОтчета.Порядок.Количество()>0*/)
			{
				//ПостроительОтчета.Порядок.Удалить(0);
			}
			/*; 

	ТекстПоляЗапроса = "";*/
			//ТекстПоляИтоговЗапроса = "";
			//ТекстПоляПоказатели = "";
			//ТекстПоляИтогов = "";
			//ТекстВыводимыеПоляЗапроса = "";
			//ТекстПоляУпорядочивания = "";
			//ТекстПоляИзмерений = "";
			//ТекстВыводимыеПоляПериоды = "";
			//ТекстПоляИтоговПериоды = "";
			//ТекстИсточникиСведений ="";
			//ТекстПоляКатегорий = "";
			//ТекстПоляГруппировки = "";
			if(true/*НЕ ЗначениеЗаполнено(Контекст.мНазваниеОтчета) И Не ПустаяСтрока(ИмяРегистра)*/)
			{
				//Контекст.мНазваниеОтчета = Метаданные.РегистрыНакопления[ИмяРегистра].Представление() + ?(ТипОтчета = "ОстаткиИОбороты", ": остатки и обороты", "");
			}
			//ОбластьПоказатели = МакетПараметрыОтчетов.ПолучитьОбласть("Показатели");
			//ОбластьПоказателиВысота = ОбластьПоказатели.ВысотаТаблицы;
			//ВидРегистра = Метаданные.РегистрыНакопления[ИмяРегистра].ВидРегистра;
			//МассивИзмеренийКолонки = Новый Массив;
			//МассивВыбранныеПоляПоУмолчанию = Новый Массив;
			//МассивИзмеренияСтрокиПоУмолчанию = Новый Массив;
			if(true/*(ТипОтчета = "СписокКроссТаблица") или (ТипОтчета = "Диаграмма")*/)
			{
				if(true/*ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки*/)
				{
					//ТипПоляРегистра="Остаток";
					/*// Отчеты по остаткам - на дату
*/
					//Контекст.мРежимВводаПериода = 1;
				}
			}
			//ОбластьГруппировки = МакетПараметрыОтчетов.ПолучитьОбласть("Группировки");
			//ОбластьГруппировкиВысота = ОбластьГруппировки.ВысотаТаблицы;
			//ОписаниеТиповКатегории = Новый ОписаниеТипов("СправочникСсылка.КатегорииОбъектов");
			//Запрос = Новый Запрос;
			//Запрос.Текст = "";
			//ТаблицаПолей = Новый ТаблицаЗначений;
			//ТаблицаПолей.Колонки.Добавить("ПутьКДанным");
			/*// описание поля запроса поля, для которого добавляются свойства и
*/
			/*// категории. Используется в условии соединения с регистром сведений,
*/
			/*// хранящим значения свойств или категорий
*/
			//ТаблицаПолей.Колонки.Добавить("Представление");
			/*// представление поля, для которого добавляются свойства и категории. 
*/
			//ТаблицаПолей.Колонки.Добавить("Назначение");
			/*// назначение свойств/категорий объектов для данного поля
*/
			/*//	ТаблицаПолей.Колонки.Добавить("ТипЗначения");  // тип значения поля, для которого добавляются свойства и категории.
*/
			/*// Не используется.
*/
			//ТаблицаПолей.Колонки.Добавить("НетКатегорий");
			/*// признак НЕиспользования категорий для объекта
*/
			/*// Предопределенные группировки по стандартным периодам
*/
			//ТекстПоляГде = Сред(ТекстВыводимыеПоляЗапроса, 2);
			if(true/*((ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты) И ((ТипОтчета = "СписокКроссТаблица")ИЛИ(ТипОтчета = "Диаграмма"))) ИЛИ (ТипОтчета = "ОстаткиИОбороты")*/)
			{
				/*// Для списка всех полей
*/
				/*ТекстПоляИтоговПериоды = ТекстПоляИтоговПериоды + ",
		|	НачалоПериода(Период, День) КАК ПериодДень ,
		|	НачалоПериода(Период, Неделя) КАК ПериодНеделя ,
		|	НачалоПериода(Период, Декада) КАК ПериодДекада ,
		|	НачалоПериода(Период, Месяц) КАК ПериодМесяц ,
		|	НачалоПериода(Период, Квартал) КАК ПериодКвартал ,
		|	НачалоПериода(Период, Полугодие) КАК ПериодПолугодие ,
		|	НачалоПериода(Период, Год) КАК ПериодГод";*/
				/*ТекстВыводимыеПоляПериоды = ТекстВыводимыеПоляПериоды + ",
		|	НачалоПериода(Период, День) КАК ПериодДень ,
		|	НачалоПериода(Период, Неделя) КАК ПериодНеделя ,
		|	НачалоПериода(Период, Декада) КАК ПериодДекада ,
		|	НачалоПериода(Период, Месяц) КАК ПериодМесяц ,
		|	НачалоПериода(Период, Квартал) КАК ПериодКвартал ,
		|	НачалоПериода(Период, Полугодие) КАК ПериодПолугодие ,
		|	НачалоПериода(Период, Год) КАК ПериодГод";*/
				//СтруктураПредставлениеПолей.Вставить("Период", "Период");
				//СтруктураПредставлениеПолей.Вставить("ПериодДень", "По дням");
				//СтруктураПредставлениеПолей.Вставить("ПериодНеделя", "По неделям");
				//СтруктураПредставлениеПолей.Вставить("ПериодДекада", "По декадам");
				//СтруктураПредставлениеПолей.Вставить("ПериодМесяц", "По месяцам");
				//СтруктураПредставлениеПолей.Вставить("ПериодКвартал", "По кварталам");
				//СтруктураПредставлениеПолей.Вставить("ПериодПолугодие", "По полугодиям");
				//СтруктураПредставлениеПолей.Вставить("ПериодГод", "По годам");
				/*// Для списка всех полей
*/
				/*ТекстВыводимыеПоляЗапроса = ТекстВыводимыеПоляЗапроса + ",
		|	Период ,
		|	Регистратор.* КАК Регистратор";*/
				//СтруктураПредставлениеПолей.Вставить("Регистратор", "Документ движения (Регистратор)");
			}
			/*Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ" 
	+ Сред(ТекстПоляЗапроса + ТекстПоляПоказатели,2) 
	+ Символы.ПС + "{ВЫБРАТЬ " + Сред(ТекстВыводимыеПоляЗапроса+ТекстПоляПоказатели+"
	|	//СВОЙСТВА
	|"+ТекстВыводимыеПоляПериоды, 2) + "}";*/
			if(true/*(ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Обороты И ((ТипОтчета = "СписокКроссТаблица")ИЛИ(ТипОтчета = "Диаграмма")))*/)
			{
				/*Текст =  Текст +
		"
		|ИЗ РегистрНакопления." + ИмяРегистра + ".Обороты(&ДатаНач, &ДатаКон, {&Периодичность}, ";*/
				//СтруктураПредставлениеПолей.Вставить("Периодичность", "Периодичность разворота итогов");
			}
			/*Текст = Текст + "{"+ТекстПоляГде+"}) КАК ТаблицаРегистра
	|//СОЕДИНЕНИЯ";*/
			if(true/*Не ПустаяСтрока(ТекстПоляГруппировки)*/)
			{
				/*Текст = Текст + Символы.ПС + "СГРУППИРОВАТЬ ПО " + Сред(ТекстПоляГруппировки, 2) + "
		|//СГРУППИРОВАТЬПО
		|";*/
			}
			/*// Отбор
*/
			/*Текст = Текст + Символы.ПС + "{ГДЕ " + Сред(ТекстВыводимыеПоляЗапроса, 2) + "
	|//СВОЙСТВА
	|//КАТЕГОРИИ
	|}";*/
			/*// Порядок
*/
			/*Текст = Текст + Символы.ПС + "{УПОРЯДОЧИТЬ ПО " + Сред(ТекстВыводимыеПоляЗапроса+ТекстПоляУпорядочивания, 2) + "
	|//СВОЙСТВА
	|}";*/
			if(true/*Не ПустаяСтрока(ТекстПоляИтогов)*/)
			{
				/*Текст = Текст + Символы.ПС +  
		"{ИТОГИ ПО " + Сред(ТекстПоляИтогов+ТекстПоляИтоговПериоды, 2) + "
		|//СВОЙСТВА
		|}";*/
			}
			/*Текст = Текст + Символы.ПС +  
	"ИТОГИ  " + Сред(ТекстПоляИтоговЗапроса, 2) + Символы.ПС + 
	"ПО ОБЩИЕ " + ТекстПоляИзмерений;*/
			/*// Автоупорядочивание
*/
			//Текст = Текст + Символы.ПС + "АВТОУПОРЯДОЧИВАНИЕ ";
			//ТекстПоляКатегорий = "";
			//ТекстПоляСвойств = "";
			if(true/*Контекст.ИспользоватьСвойстваИКатегории = Истина*/)
			{
				/*ДобавитьВТекстСвойстваИКатегории(ТаблицаПолей, Текст, СтруктураПредставлениеПолей, 
				Контекст.мСоответствиеНазначений, ПостроительОтчета.Параметры
				,, ТекстПоляКатегорий, ТекстПоляСвойств,,,,,,Контекст.мСтруктураДляОтбораПоКатегориям);*/
			}
			//ПостроительОтчета.Текст = Текст;
			if(true/*Контекст.ИспользоватьСвойстваИКатегории = Истина*/)
			{
				//УстановитьТипыЗначенийСвойствИКатегорийДляОтбора(ПостроительОтчета, ТекстПоляКатегорий, ТекстПоляСвойств, Контекст.мСоответствиеНазначений, СтруктураПредставлениеПолей);
			}
			if(true/*(ТипОтчета = "СписокКроссТаблица") ИЛИ (ТипОтчета = "Диаграмма")*/)
			{
			}
		}
		// ЗаполнитьНачальныеНастройкиПоМакету()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ПЕРИОДАМИ
		// Повторяем поведение переключателя на кнопках из меню
		//
		// Параметры:
		//  Отчет - объект отчета.
		//  ФормаОтчета - основная форма отчета, чья панель заполняется
		//
		// Возвращаемое значение:
		//  Нет.
		//

		public void ПометитьКнопкиОтображения(/*Отчет, ФормаОтчета*/)
		{
			//ВариантОтображения = Отчет.ВариантОтображения;
			//Отображение			= ФормаОтчета.ЭлементыФормы.КоманднаяПанельФормы.Кнопки.ПодменюОтображение.Кнопки;
			//ОтображениеВПодменю	= ФормаОтчета.ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.ПодменюОтображение.Кнопки;
			//Отображение.ОтображениеТаблица.Пометка			= ВариантОтображения = Перечисления.ВариантыОтображенияОтчетов.Таблица;
			//Отображение.ОтображениеДиаграмма.Пометка		= ВариантОтображения = Перечисления.ВариантыОтображенияОтчетов.Диаграмма;
			//Отображение.ОтображениеСводнаяТаблица.Пометка	= ВариантОтображения = Перечисления.ВариантыОтображенияОтчетов.СводнаяТаблица;
			//ОтображениеВПодменю.ОтображениеТаблица.Пометка			= ВариантОтображения = Перечисления.ВариантыОтображенияОтчетов.Таблица;
			//ОтображениеВПодменю.ОтображениеДиаграмма.Пометка		= ВариантОтображения = Перечисления.ВариантыОтображенияОтчетов.Диаграмма;
			//ОтображениеВПодменю.ОтображениеСводнаяТаблица.Пометка	= ВариантОтображения = Перечисления.ВариантыОтображенияОтчетов.СводнаяТаблица;
		}
		// ПометитьКнопкиОтображения
		// Процедура обслуживает интерфейс справок-расчетов:
		// если период формирования отчета находится в рамках одного месяца, то
		// процедура дает доступность кнопкам "Заголовок" и "Подпись"

		public void КонтрольДоступностиЗаголовкаИПодписей(/*ДатаНачала, ДатаКонца, КнопкаЗаголовок, КнопкаПодпись*/)
		{
			//ДоступностьКнопок = (НачалоДня(ДатаНачала) = НачалоМесяца(ДатаКонца) И КонецДня(ДатаКонца) = КонецМесяца(ДатаНачала));
			//КнопкаЗаголовок.Доступность = ДоступностьКнопок;
			//КнопкаПодпись.Доступность   = ДоступностьКнопок;
		}
		// функция возвращает ложь, если в списке установлена хотя бы одна пометка,
		// и истина, если в списке нет ни одной пометки

		public object ВСпискеНеУстановленыПометки(/*ТекущийСписок*/)
		{
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ И ФУНКЦИИ ЗАПОЛНЕНИЯ ДОКУМЕНТОВ ДАННЫМИ ОТЧЕТА
		// Процедура переносит строки из дерева значений в таблицу значений.
		// Переносятся только строки самого нижнего уровня - т.е. те, у которых нет вложенных строк.
		// Процедура вызывает сама себя рекурсивно.
		//
		// Параметры:
		//  СтрокиДерева 		- строки обрабатываемого дерева значений;
		//  ДанныеДляЗаполнения - результирующая таблица значений.
		// Необходимые колонки результирующей таблицы должны быть предварительно созданы.

		public void ДобавитьДетальныеЗаписиВТаблицу(/*СтрокиДерева, ДанныеДляЗаполнения*/)
		{
		}
		// Отключает использование всех элементов структуры настройки компоновки,
		// не поддерживаемых для выгрузки в универсальную коллекцию значений.
		// Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений.
		//
		// Параметры
		//		НастройкиКомпоновки: модифицируемые настройки, типы:
		//			НастройкиКомпоновкиДанных, ГруппировкаКомпоновкиДанных
		//
		// Процедура вызывает сама себя рекурсивно для обхода дерева структуры настроек компоновки.

		public void ОтключитьЗапрещенныеДляВыводаВКоллекциюСтруктуры(/*НастройкиКомпоновки*/)
		{
		}
		// Получает данные для заполнения табличной части с помощью отчета, формируемого по настройке.
		// Используется во внешних обработках заполнения табличных частей.
		//
		// Параметры
		//  ИсточникЗаполнения 	- сохраненная настройка отчета, в соответствии с которой подготавливаются данные
		//  ЗаполняемыеПоля 	- структура, содержащая перечень полей для заполнения
		//
		// Возвращаемое значение
		//  таблица значений, содержащая данные, полученные отчетом.
		//  Если по указанной настройке формирование такой таблицы невозможно, то возвращается Неопределено.

		public object ПолучитьДанныеОтчетаЗаполнения(/*ИсточникЗаполнения, ЗаполняемыеПоля, НачалоПериода = Неопределено, КонецПериода = Неопределено*/)
		{
			/*//Умеем заполнять только данными отчета. Поэтому настройка должна иметь соответствующий тип.
*/
			if(true/*ИсточникЗаполнения.ТипНастройки <> Перечисления.ТипыНастроек.НастройкиОтчета*/)
			{
			}
			/*//Получим настройки отчета.
*/
			//СтруктураНастроек = ИсточникЗаполнения.ХранилищеНастроек.Получить();
			if(true/*СтруктураНастроек = Неопределено*/)
			{
			}
			//ЭтоПроизвольныйОтчет = (ТипЗнч(ИсточникЗаполнения.НастраиваемыйОбъект) = Тип("СправочникСсылка.ПроизвольныеОтчеты"));
			if(true/*ЭтоПроизвольныйОтчет*/)
			{
				//ОтчетОбъект = Отчеты.ПроизвольныйОтчет.Создать();
				//ОтчетОбъект.УстановитьПроизвольныйОтчет(ИсточникЗаполнения.НастраиваемыйОбъект, ИсточникЗаполнения);
				//СхемаКомпоновки = ОтчетОбъект.СхемаКомпоновкиДанных;
				//КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;
			}
			/*// Если период отчета задан в параметрах функции, то применим его.
*/
			/*// Если не задан - то период определяется настройкой отчета.
*/
			if(true/*НачалоПериода <> Неопределено И КонецПериода <> Неопределено*/)
			{
				//КоллекцияЗначенийПараметров = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
				//ЗначениеПараметраНачалоПериода = КоллекцияЗначенийПараметров.Найти("НачалоПериода");
				if(true/*ЗначениеПараметраНачалоПериода <> Неопределено*/)
				{
					//ЗначениеПараметраНачалоПериода.Значение      = НачалоДня(НачалоПериода);
					//ЗначениеПараметраНачалоПериода.Использование = Истина;
				}
				//ЗначениеПараметраКонецПериода = КоллекцияЗначенийПараметров.Найти("КонецПериода");
				if(true/*ЗначениеПараметраКонецПериода <> Неопределено*/)
				{
					//ЗначениеПараметраКонецПериода.Значение       = КонецДня(КонецПериода);
					//ЗначениеПараметраКонецПериода.Использование  = Истина;
				}
			}
			/*//Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений.
*/
			//ОтключитьЗапрещенныеДляВыводаВКоллекциюСтруктуры(КомпоновщикНастроек.Настройки);
			/*//Все отборы могут быть заданы в настройках отчета.
*/
			/*//Т.е. для разных значений отборов используются разные сохраненные настройки.
*/
			/*//Возможны другие варианты:
*/
			/*//Применим отборы, определяемые реквизитами документа
*/
			/*//Посмотрим, есть ли у нас отборы с выключенным использованием.
*/
			/*//Именно такие отборы рассматриваются как команда "возьми из документа".
*/
			/*//Для Каждого ЗначениеОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
*/
			/*//	Если ЗначениеОтбора.Использование = Ложь Тогда
*/
			/*//		//Проверим, есть ли такой реквизит в шапке
*/
			/*//		ИмяРеквизита = "" + ЗначениеОтбора.ЛевоеЗначение;
*/
			/*//		Если Отборы.Свойство(ИмяРеквизита)<>Неопределено Тогда
*/
			/*//			//Установим отбор
*/
			/*//			ЗначениеОтбора.ВидСравнения 	= ВидСравненияКомпоновкиДанных.Равно;
*/
			/*//			ЗначениеОтбора.ПравоеЗначение 	= Отборы[ИмяРеквизита];
*/
			/*//			ЗначениеОтбора.Использование	= Истина;
*/
			/*//		КонецЕсли;
*/
			/*//	КонецЕсли;
*/
			/*//КонецЦикла;
*/
			/*//Другой вариант - применяем все отборы, которые заданы в обработке заполнения
*/
			/*//Для Каждого Отбор Из Отборы Цикл
*/
			/*//	ПолеКомпоновки = Новый ПолеКомпоновкиДанных(Отбор.Ключ);
*/
			/*//	Если КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных(Отбор.Ключ))<>Неопределено Тогда
*/
			/*//		ЗначениеОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
*/
			/*//		ЗначениеОтбора.ВидСравнения 	= ВидСравненияКомпоновкиДанных.Равно;
*/
			/*//		ЗначениеОтбора.ЛевоеЗначение	= ПолеКомпоновки;
*/
			/*//		ЗначениеОтбора.ПравоеЗначение 	= Отбор.Значение;
*/
			/*//		ЗначениеОтбора.Использование	= Истина;
*/
			/*//	КонецЕсли;
*/
			/*//КонецЦикла;
*/
			/*//Отключим вывод итогов, так как в результирующем дереве значений их тяжело отличить от "не-итоговых" записей.
*/
			//Параметр = КомпоновщикНастроек.Настройки.ПараметрыВывода.Элементы.Найти("VerticalOverallPlacement");
			if(true/*Параметр<>Неопределено*/)
			{
				//Параметр.Значение 		= РасположениеИтоговКомпоновкиДанных.Нет;
				//Параметр.Использование 	= Истина;
			}
			//ДанныеОтчета = Новый ДеревоЗначений();
			if(true/*ЭтоПроизвольныйОтчет*/)
			{
				if(true/*НЕ ОтчетОбъект.СформироватьОтчет(ДанныеОтчета)*/)
				{
				}
			}
			//ДанныеДляЗаполнения = Новый ТаблицаЗначений;
			/*//Перенесем данные в таблицу.
*/
			//ДобавитьДетальныеЗаписиВТаблицу(ДанныеОтчета.Строки, ДанныеДляЗаполнения);
			/*//Не обязательно имя реквизита должно совпадать с именем заполняемой колонки.
*/
			/*//Это допущение сделано для того, чтобы можно было использовать пользовательские поля.
*/
			/*//Допущение такое: 
*/
			/*//	если в скомпонованных данных не будет колонки с именем ресурса, 
*/
			/*//	то будет взято пользовательское поле с заголовком, совпадающим с именем поля (после удаления пробелов). 
*/
			/*//Поищем пользовательские поля, пригодные для заполнения полей нашей табличной части.
*/
			//ПользовательскиеПоля = Новый Структура();
			/*//Перенесем значения пользовательских полей в предназначенные для них колонки.
*/
			return null;
		}
	}
}
